package com.iot.commonutils.controller;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.iot.commonutils.utils.HttpContextUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.StringUtils;

/**
 * @author 孟繁森
 * @describe: 基础controller，可以为所有controller的父类，封装一些公共的东西（比如获取当前登录的用户信息）
 * @date 2021/3/11 16:52
 */
public class BaseController {
    private Logger logger = LoggerFactory.getLogger(BaseController.class);

    /*说明：在获取分页的时候我们可以直接继承这个类，不用去new Page这样的编码*/
    public <E> Page<E> getPage(Class<E> e) {
        int pageNumber = getParamToInt("page", 1);
        int pageSize = getParamToInt("limit", 10);
        Page<E> page = new Page<>(pageNumber, pageSize);
        //支持sort、order参数
        String sortField = HttpContextUtils.getHttpServletRequest().getParameter("sort");
        String orderBy = HttpContextUtils.getHttpServletRequest().getParameter("order");
        if (!StringUtils.isEmpty(sortField)) {
            if (StringUtils.isEmpty(orderBy)) {
                //默认是升序排列
                page.setAsc(sortField);
            } else {
                return "asc".equalsIgnoreCase(orderBy) ? page.setAsc(sortField) : page.setDesc(sortField);
            }
        }
        return page;
    }
    private int getParamToInt(String key, int defaultValue) {
        String pageNumber = HttpContextUtils.getHttpServletRequest().getParameter(key);
        if (StringUtils.isEmpty(pageNumber)) {
            return defaultValue;
        }
        return Integer.parseInt(pageNumber);
    }
}
